/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DataAccess.entity;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Domenico
 */
@Entity
@Table(name = "indirizzo")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Indirizzo.findAll", query = "SELECT i FROM Indirizzo i"),
    @NamedQuery(name = "Indirizzo.findByIdIndirizzo", query = "SELECT i FROM Indirizzo i WHERE i.idIndirizzo = :idIndirizzo"),
    @NamedQuery(name = "Indirizzo.findByVia", query = "SELECT i FROM Indirizzo i WHERE i.via = :via"),
    @NamedQuery(name = "Indirizzo.findByCitta", query = "SELECT i FROM Indirizzo i WHERE i.citta = :citta"),
    @NamedQuery(name = "Indirizzo.findByProvincia", query = "SELECT i FROM Indirizzo i WHERE i.provincia = :provincia"),
    @NamedQuery(name = "Indirizzo.findByCap", query = "SELECT i FROM Indirizzo i WHERE i.cap = :cap"),
    @NamedQuery(name = "Indirizzo.findByNumeroCivico", query = "SELECT i FROM Indirizzo i WHERE i.numeroCivico = :numeroCivico")})
public class Indirizzo implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idIndirizzo")
    private Integer idIndirizzo;
    @Column(name = "via")
    private String via;
    @Column(name = "citta")
    private String citta;
    @Column(name = "provincia")
    private String provincia;
    @Column(name = "cap")
    private String cap;
    @Column(name = "numeroCivico")
    private String numeroCivico;
    @OneToMany(mappedBy = "indirizzoTitolare")
    private Collection<Clientefornitore> clientefornitoreCollection;
    @OneToMany(mappedBy = "indirizzoFiscale")
    private Collection<Clientefornitore> clientefornitoreCollection1;
    @OneToMany(mappedBy = "indirizzoAttuale")
    private Collection<Clientefornitore> clientefornitoreCollection2;

    public Indirizzo() {
    }

    public Indirizzo(Integer idIndirizzo) {
        this.idIndirizzo = idIndirizzo;
    }

    public Integer getIdIndirizzo() {
        return idIndirizzo;
    }

    public void setIdIndirizzo(Integer idIndirizzo) {
        this.idIndirizzo = idIndirizzo;
    }

    public String getVia() {
        return via;
    }

    public void setVia(String via) {
        this.via = via;
    }

    public String getCitta() {
        return citta;
    }

    public void setCitta(String citta) {
        this.citta = citta;
    }

    public String getProvincia() {
        return provincia;
    }

    public void setProvincia(String provincia) {
        this.provincia = provincia;
    }

    public String getCap() {
        return cap;
    }

    public void setCap(String cap) {
        this.cap = cap;
    }

    public String getNumeroCivico() {
        return numeroCivico;
    }

    public void setNumeroCivico(String numeroCivico) {
        this.numeroCivico = numeroCivico;
    }

    @XmlTransient
    public Collection<Clientefornitore> getClientefornitoreCollection() {
        return clientefornitoreCollection;
    }

    public void setClientefornitoreCollection(Collection<Clientefornitore> clientefornitoreCollection) {
        this.clientefornitoreCollection = clientefornitoreCollection;
    }

    @XmlTransient
    public Collection<Clientefornitore> getClientefornitoreCollection1() {
        return clientefornitoreCollection1;
    }

    public void setClientefornitoreCollection1(Collection<Clientefornitore> clientefornitoreCollection1) {
        this.clientefornitoreCollection1 = clientefornitoreCollection1;
    }

    @XmlTransient
    public Collection<Clientefornitore> getClientefornitoreCollection2() {
        return clientefornitoreCollection2;
    }

    public void setClientefornitoreCollection2(Collection<Clientefornitore> clientefornitoreCollection2) {
        this.clientefornitoreCollection2 = clientefornitoreCollection2;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idIndirizzo != null ? idIndirizzo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Indirizzo)) {
            return false;
        }
        Indirizzo other = (Indirizzo) object;
        if ((this.idIndirizzo == null && other.idIndirizzo != null) || (this.idIndirizzo != null && !this.idIndirizzo.equals(other.idIndirizzo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "DataAccess.entity.Indirizzo[ idIndirizzo=" + idIndirizzo + " ]";
    }
    
}
